<?php

class ModelController extends \BaseController {

    /**
     * 获得全部模型信息
     * @return [array] $models
     * $models['id']           模型id
     * $models['name']         模型名
     * $models['table_name']   模型对应表名
     */
    public function index(){
        $models = Model::all();
        return $models;
    }

    /**
     * 
     * @return Response
     */
    public function create(){
        
    }

    /**
     * 增加模型
     * @param [string] $name        模型名
     * @param [string] $tableName   模型名对应表名
     * @return [array] 异常信息
     */
    public function add(){
        // $name = Input::get('name');
        // $tableName = Input::get('tableName');
        // $fieldNames = Input::get('fieldNames');
        // $displayNames = Input::get('displayNames');
        // $fieldTypes = Input::get('fieldTypes');

        $data = Input::all();
        $rules = array(
                'name' => 'required|unique:model,name',
                'tableName' => 'required|alpha_dash|unique:model,table_name',
            );
        BaseService::validateInputParam($data, $rules);
        DB::transaction(function() use ($data){
            ModelService::add($data);
        });
        return BaseService::getResult('添加模型成功');
    }

    /**
     * 显示模型信息
     * @param  [int]  $id 模型id
     * @return 模型
     * $model['id']         模型id
     * $model['name']       模型名
     * $model['table_name'] 模型对应表名
     */
    public function show(){
        $id = Input::get('id');
        $model = Model::find($id);
        if(!isset($model)){
            return new ModelNoFoundException;
        }
        return $model;
    }

    /**
     * 显示模型信息
     * @param  [int]  $id 模型id
     * @return 模型
     * $model['id']         模型id
     * $model['name']       模型名
     * $model['table_name'] 模型对应表名
     */
    public function edit(){
        $id = Input::get('id');
        $model = Model::find($id);
        if(!isset($model)){
            return new ModelNoFoundException;
        }
        return $model;
    }

    /**
     * 更新模型
     * @param [int]  $id     模型id
     * @param [string] $name 模型名
     * @return [array] 异常信息
     */
    public function update(){
        $data = Input::all();
        $rules = array('id' => 'required|integer|exists:model,id',
                'name' => 'required|unique:field,name,'.$data['id']);
        BaseService::validateInputParam($data, $rules);
        $result = ModelService::update($data);
        return $result;
    }

    /**
     * 删除模型
     * @param  [int]  $id 模型id
     * @return [array] 异常信息
     */
    public function delete(){
        $data = Input::all();
        $rules = array('id' => 'required|integer|exists:model,id');
        BaseService::validateInputParam($data, $rules);
        $result = ModelService::delete($data['id']);
        return $result;
    }

}